package com.liannong.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.liannong.entity.Product;
import com.liannong.vo.ProductVO;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;

@Transactional
public interface ProductService extends IService<Product> {
    
    /**
     * 获取商品列表
     * @return 商品列表
     */
    List<ProductVO> getProductList();
    
    /**
     * 获取商品详情
     * @param productId 商品ID
     * @return 商品详情
     */
    ProductVO getProductDetail(Long productId);
    
    /**
     * 更新商品信息
     * @param product 商品信息
     * @return 更新结果
     */
    boolean updateById(Product product);
    
    /**
     * 根据温度区间查询商品
     * @param minTemp 最低温度
     * @param maxTemp 最高温度
     * @return 商品列表
     */
    List<ProductVO> getProductsByTemperature(Integer minTemp, Integer maxTemp);
    
    /**
     * 更新商品库存
     * @param productId 商品ID
     * @param stock 库存数量
     * @return 更新结果
     */
    boolean updateStock(Long productId, Integer stock);
    
    /**
     * 根据溯源码获取商品ID
     * @param traceCode 溯源码
     * @return 商品ID
     */
    Long getProductIdByTraceCode(String traceCode);
    
    /**
     * 由果农添加商品信息
     * @param product 商品信息
     * @param userId 果农用户ID
     * @return 添加结果
     */
    boolean addProductByFarmer(Product product, Integer userId);
    
    /**
     * 管理员审核商品信息
     * @param productId 商品ID
     * @param auditUserId 审核用户ID
     * @param auditStatus 审核状态：1-通过，2-拒绝
     * @param auditComment 审核意见
     * @return 审核结果
     */
    boolean auditProduct(Integer productId, Integer auditUserId, Integer auditStatus, String auditComment);
    
    /**
     * 获取待审核的商品列表
     * @return 待审核商品列表
     */
    List<ProductVO> getPendingAuditProducts();
    
    /**
     * 获取果农创建的商品列表
     * @param farmerId 果农ID
     * @return 商品列表
     */
    List<ProductVO> getProductsByFarmer(Integer farmerId);
} 